001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Mar 11, 2003
005 * Time: 7:25:53 PM
006 */
007
008 package EVolve.visualization.XYViz.ValValViz;
009
010 import EVolve.data.Element;
011 import EVolve.data.DataFilter;
012 import EVolve.data.Entity;
013 import EVolve.util.painters.*;
014 import EVolve.util.painters.shapes.Line;
015 import EVolve.visualization.AutoShapeImage;
016 import EVolve.visualization.Dimension;
017 import EVolve.visualization.ReferenceDimension;
018 import EVolve.visualization.ValueDimension;
019 import EVolve.Scene;
020 import javax.swing.*;
021 import java.awt.*;
022 import java.util.HashMap;
023
024 public class ContinousMetric extends ValueValueVisualization{
025 private JTextField textInterval;
026 private int triggerDimension;
027 private int selectedTrigger = 0;
028
029
030 public ContinousMetric() {
031
032 }
033
034 public Dimension[] createDimension() {
035 Dimension[] returnVal = new Dimension[3];
036
037 xAxis = new ValueDimension();
038 yAxis = new ValueDimension();
039 entityIdFilter = new ReferenceDimension();
040
041 returnVal[0] = xAxis;
042 returnVal[1] = yAxis;
043 returnVal[2] = entityIdFilter; // trigger filter
044
045 triggerDimension = returnVal.length - 1;
046
047 return returnVal;
048 }
049
050 public JMenuItem[] createSelectionMenuItem() {
051 return null;
052 }
053
054 protected JPanel createConfigurationPanel() {
055 JPanel configurationPanel = new JPanel(new FlowLayout());
056 configurationPanel.add(new JLabel("Interval: "));
057
058 textInterval = new JTextField(String.valueOf(interval), 10);
059 configurationPanel.add(textInterval);
060
061 return configurationPanel;
062 }
063
064 public void preVisualize() {
065 }
066
067 public void receiveElement(Element element) {
068 if (element.isOptional()) return;
069
070 long mappedTriggerId = entityIdFilter.getField(element);
071 long triggerId = entityIdFilter.getEntityFromInt((int)mappedTriggerId).getId();
072
073 if ( (int)triggerId != selectedTrigger) return;
074
075 // do paint things here
076
077 }
078
079 public void visualize() {
080 sort();
081 }
082
083 protected void installPainter() {
084 painter = new AllocDensityMetricPainter();
085 }
086
087 public void mouseMove(int x, int y) {
088 }
089
090 public void makeSelection() {
091
092 }
093
094 protected void updateComboDimension() {
095 for (int i = 0; i < triggerDimension; i++) {
096 if (comboDimension[i].getSelectedIndex() != -1) {
097 comboDimension[i].setToolTipText(dataFilter[comboSubject.getSelectedIndex()][i][comboDimension[i].getSelectedIndex()].getDescription());
098 }
099 }
100
101 selectedTrigger = comboDimension[triggerDimension].getSelectedIndex();
102
103 // according to dimension definition in VizFactory, we get the data filter manually
104 // and then set it to the entityIdFilter(trigger filter)
105 DataFilter dataFilter = Scene.getDataManager().getDataFilter(subjectDefinition,definition.getDimensionDefinition()[triggerDimension].getProperty())[0];
106 entityIdFilter.setDataFilter(dataFilter);
107
108 // now, with the data filter we can get all trigger name from the entity set which we built during
109 // loading data trace. With these names, we can set the combo box manually
110 comboDimension[triggerDimension].removeAllItems();
111 HashMap triggerEntities = Scene.getDataManager().getEntity()[dataFilter.getTargetType()];
112
113 //here I assume triggers have continuous Id starting from 0, otherwize you have to change this
114 for (int i=0; i<triggerEntities.size(); i++) {
115 comboDimension[triggerDimension].addItem(((Entity)triggerEntities.get(new Long(i))).getName());
116 }
117 comboDimension[triggerDimension].setSelectedIndex(selectedTrigger);
118 }
119 }